package top.usts.springframework.beans.factory;

import top.usts.springframework.beans.BeansException;
import top.usts.springframework.beans.factory.HierarchicalBeanFactory;
import top.usts.springframework.beans.factory.ListableBeanFactory;
import top.usts.springframework.beans.factory.config.BeanDefinition;
import top.usts.springframework.beans.factory.config.BeanPostProcessor;
import top.usts.springframework.beans.factory.config.ConfigureableBeanFactory;

/**
 * @description:
 * @author: CJ
 * @date: 2022/2/22
 */
public interface ConfigureableListableBeanFactory extends ListableBeanFactory, HierarchicalBeanFactory, ConfigureableBeanFactory {

    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 提前实例化单例对象
     * @throws BeansException
     */
    void preInstantiateSingletons() throws BeansException;

    /**
     * 增加 BeanPostProcessor
     * @param beanPostProcessor
     */
    @Override
    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);



}
